#include "password.h"
#include "struct_ul.h"
#include "MD5.h"
//id限定数字的输入
bool IsNum(string str){
    for (int i = 0; i < str.size(); i++){
        int tmp = (int)str[i];
        if (tmp >= 48 && tmp <= 57)continue;
        else return false;
    }
    return true;
}
//用户登录认证
bool User_Authentication(string password){
    int key= get_hash( getMD5(password));
    if(user_password_id.get(key) ==-1){
        puts("未经注册的用户!");
        return false;
    }else{
        puts("登陆成功!");
        return true;
    }
}
//用户管理员登录认证
bool User_Manager_Authentication(string password){
    int key = get_hash(getMD5(password));
    if(user_manager_password.get(key) ==-1){
        puts("未经注册的管理员!");
        return false;
    }else{
        puts("登陆成功!");
        return true;
    }
}
//图书管理员登录认证
bool Script_Manager_Authentication(string password){
    int key= get_hash(getMD5(password));
    if(script_manager_password.get(key) == -1){
        puts("未经认证的管理员!");
        return false;
    }else{
        puts("登陆成功!");
        return false;
    }
}
//用户注册,全局变量total_users自加
bool User_Register(int key,int value){
    user_password_id.add(key,value);
    return true;
}
//用户管理员注册
bool User_Manager_Register(string password){
    int key= get_hash(getMD5(password));
    if(user_manager_password.get(key)!=-1){
        puts("该账户已经注册!");
        return false;
    }
    puts("注册成功!");
    user_manager_password.add(key,++total_usmanagers);
    return true;
}
//图书管理员注册
bool Script_Manager_Register(string password){
    int key=get_hash(getMD5(password));
    if(script_manager_password.get(key)!=-1){
        puts("该用户已注册!");
        return false;
    }
    script_manager_password.add(key,++total_scmanagers);
    puts("注册成功!");
    return true;
}
//用户密码修改
bool User_Password_Modify(string password){
    int key= get_hash(getMD5(password));
    int value=user_password_id.get(key);
    string newpass;
    puts("Please enter the new password:");
    std::cin>>newpass;
    user_password_id.modify(key,0);
    user_password_id.add(get_hash(getMD5(newpass)),value);
    return true;
}
//用户管理员密码修改
bool User_Manager_Password_Modify(string password){
    int key  = get_hash(getMD5(password));
    int value=user_manager_password.get(key);
    string newpass;
    puts("Please enter the new password:");
    std::cin>>newpass;
    user_manager_password.modify(key,0);
    user_manager_password.add(get_hash(getMD5(newpass)),value);
    return true;
}
//图书管理员密码修改
bool Script_Manager_Password_Modify(string password){
    int key  = get_hash(getMD5(password));
    int value=script_manager_password.get(key);
    string newpass;
    puts("Please enter the new password:");
    std::cin>>newpass;
    script_manager_password.modify(key,0);
    script_manager_password.add(get_hash(getMD5(newpass)),value);
    return true;
}
